As well known in the art, robot systems become complicated as uses of robots expand from industries to home. Different from industrial robots having hardware and software architecture restricted to specific operations, home intelligent robots have sensors and motor actuators to carry out various tasks. Further, the intelligent robots have processing units, e.g., micro processors, controllers, DSPs (Digital Signal Processors) and SoCs (System on Chips), for controlling elements of the robots and performing communications with the outside. The processing units have distributed architecture connected via networks.
Robot software modules are executed on the processing units and exchange data and control with each other via communications. In order to efficiently control the robots having such complicatedly-entangled distributed architectures, efficient control software architecture is necessary that can integratedly and harmoniously process various tasks simultaneously happened at nodes while efficiently using limited resources of the robots.
Robot software components, which are reusable and replaceable software modules capable of being accessed via interfaces provided thereby, performs functions of the robot software modules. Component users only use the interfaces without knowing details of the corresponding interfaces. That is, the components are black boxes having the interfaces open to the outside, which allows free modification of internal architectures of the components as long as the interfaces are not modified.
For the industrial robots, there are mainly two robot control patterns: a client/server pattern and a control loop pattern. In the client/server pattern, a method provided by a component is called to perform specific operations or read or modify attributes of the component. Examples of the client/server pattern are CORBA (Common Object Request Broker Architecture), RMI (Remote Method Invocation) and RPC (Remote Procedure Call).
In the control loop pattern, samely as in typical control loops, data or event is periodically exchanged between components in a robot and a component performs a task by processing sensor data based on a state of the component to drive actuators of the robot. An example of the control loop pattern is JAUS (Joint Architecture for Unmanned System) which is mounted on unmanned vehicles and forms a control loop for periodically exchanging data having a specific data format between the components.
Meanwhile, since the home intelligent robots have much more complicated architecture and perform more various functions than those of the industrial robots, it is efficient to use both of the above-described robot control patterns for more flexible home intelligent robot control.
Therefore, robot software components need to operate actively while having therein FSMs (Finite State Machines) and be controlled via exchanging data with each other and calling a method. Recently proposed robot programming methods using such actively operating components are, e.g., OROCOS (Open Robot Control System) and RTC (Robot Technology Component).
Robot applications are combinations of the components, and, in order to decrease coupling degrees between the components, using of the components via ports is recommended. The ports connect the components and allow the components to communicate with each other.
However, though the ports are used, if too many threads are used in processing a number of components operating independently, system resources are wasted and information delivery between the threads are retarded, which causes decrease in efficiency of the system.